/**
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 */
package com.jeesite.modules.st.entity;

import org.hibernate.validator.constraints.Length;

import java.util.Date;

import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.JoinTable.Type;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.util.List;

import com.jeesite.common.collect.ListUtils;

import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;

/**
 * 出入库单Entity
 *
 * @author HOHD
 * @version 2020-12-16
 */
@Table(name = "st_inventory_bill", alias = "a", columns = {
        @Column(name = "id", attrName = "id", label = "id", isPK = true),
        @Column(name = "bill_no", attrName = "billNo", label = "单据号"),
        @Column(name = "bill_date", attrName = "billDate", label = "单据日期"),
        @Column(name = "bill_type", attrName = "billType", label = "单据类别"),
        @Column(name = "tally_date", attrName = "tallyDate", label = "入账日期"),
        @Column(name = "bar_code", attrName = "barCode", label = "条码扫描"),
        @Column(name = "supplier_id", attrName = "supplierId", label = "供应商"),
        @Column(name = "primary_bill_no", attrName = "primaryBillNo", label = "源单"),
        @Column(name = "in_or_out", attrName = "inOrOut", label = "出库或入库"),
        @Column(name = "dept_code", attrName = "deptCode", label = "部门编码"),
        @Column(name = "dept_name", attrName = "deptName", label = "部门", queryType = QueryType.LIKE),
        @Column(name = "approve_state", attrName = "approveState", label = "审批状态"),
        @Column(name = "approve_man_code", attrName = "approveManCode", label = "审批人编码"),
        @Column(name = "approve_man_name", attrName = "approveManName", label = "审批人", queryType = QueryType.LIKE),
        @Column(name = "create_by", attrName = "createBy", label = "创建者", isUpdate = false, isQuery = false),
        @Column(name = "create_date", attrName = "createDate", label = "创建时间", isUpdate = false, isQuery = false),
        @Column(name = "update_date", attrName = "updateDate", label = "更新时间", isQuery = false),
        @Column(name = "update_by", attrName = "updateBy", label = "更新者", isQuery = false),
        @Column(name = "batchs", attrName = "batchs", label = "数量"),
        @Column(name = "primary_id", attrName = "primaryId", label = "数量"),
        @Column(name = "loss", attrName = "loss", label = "数量"),
        @Column(name = "remarks", attrName = "remarks", label = "备注信息", queryType = QueryType.LIKE),
}, orderBy = "a.update_date DESC"
)
public class StInventoryBill extends DataEntity<StInventoryBill> {

    private static final long serialVersionUID = 1L;
    private String billNo;        // 单据号
    private Date billDate;        // 单据日期
    private Integer billType;        // 单据类别
    private Date tallyDate;        // 入账日期
    private String barCode;        // 条码扫描
    private String supplierId;
    private String primaryBillNo;        // 源单
    private Integer inOrOut;        // 出库或入库
    private String deptCode;        // 部门编码
    private String deptName;        // 部门
    private Integer approveState;        // 审批状态
    private String approveManCode;        // 审批人编码
    private String approveManName;        // 审批人
    private List<StInventoryBillDetail> stInventoryBillDetailList = ListUtils.newArrayList();        // 子表列表
    private String batchs;
    private String primaryId;//盘点的时候用
    private Integer loss;//盘亏还是盘盈，其实这个在上面的type中已经有了！！！

    public Integer getLoss() {
        return loss;
    }

    public void setLoss(Integer loss) {
        this.loss = loss;
    }

    public String getPrimaryId() {
        return primaryId;
    }

    public void setPrimaryId(String primaryId) {
        this.primaryId = primaryId;
    }

    public StInventoryBill() {
        this(null);
    }

    public StInventoryBill(String id) {
        super(id);
    }

    public String getBatchs() {
        return batchs;
    }

    public void setBatchs(String batchs) {
        this.batchs = batchs;
    }

    public String getSupplierId() {
        return supplierId;
    }

    public void setSupplierId(String supplierId) {
        this.supplierId = supplierId;
    }

    @Length(min = 0, max = 20, message = "单据号长度不能超过 20 个字符")
    public String getBillNo() {
        return billNo;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date getBillDate() {
        return billDate;
    }

    public void setBillDate(Date billDate) {
        this.billDate = billDate;
    }

    public Integer getBillType() {
        return billType;
    }

    public void setBillType(Integer billType) {
        this.billType = billType;
    }

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date getTallyDate() {
        return tallyDate;
    }

    public void setTallyDate(Date tallyDate) {
        this.tallyDate = tallyDate;
    }

    public String getBarCode() {
        return barCode;
    }

    public void setBarCode(String barCode) {
        this.barCode = barCode;
    }

    @Length(min = 0, max = 20, message = "源单长度不能超过 20 个字符")
    public String getPrimaryBillNo() {
        return primaryBillNo;
    }

    public void setPrimaryBillNo(String primaryBillNo) {
        this.primaryBillNo = primaryBillNo;
    }

    public Integer getInOrOut() {
        return inOrOut;
    }

    public void setInOrOut(Integer inOrOut) {
        this.inOrOut = inOrOut;
    }

    @Length(min = 0, max = 20, message = "部门编码长度不能超过 20 个字符")
    public String getDeptCode() {
        return deptCode;
    }

    public void setDeptCode(String deptCode) {
        this.deptCode = deptCode;
    }

    @Length(min = 0, max = 20, message = "部门长度不能超过 20 个字符")
    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public Integer getApproveState() {
        return approveState;
    }

    public void setApproveState(Integer approveState) {
        this.approveState = approveState;
    }

    @Length(min = 0, max = 20, message = "审批人编码长度不能超过 20 个字符")
    public String getApproveManCode() {
        return approveManCode;
    }

    public void setApproveManCode(String approveManCode) {
        this.approveManCode = approveManCode;
    }

    @Length(min = 0, max = 5, message = "审批人长度不能超过 5 个字符")
    public String getApproveManName() {
        return approveManName;
    }

    public void setApproveManName(String approveManName) {
        this.approveManName = approveManName;
    }

    public List<StInventoryBillDetail> getStInventoryBillDetailList() {
        return stInventoryBillDetailList;
    }

    public void setStInventoryBillDetailList(List<StInventoryBillDetail> stInventoryBillDetailList) {
        this.stInventoryBillDetailList = stInventoryBillDetailList;
    }

}